#define _CRT_SECURE_NO_WARNINGS

//#include<iostream>
//using namespace std;
//
//class Complex{
//private:
//    double a, b;
//public:
//    Complex(double aa, double bb)
//    {
//        a = aa;
//        b = bb;
//    }
//    operator double()
//    {
//        return  a;
//    }
//};
//
//int main()
//{
//    Complex com1(2.2, 4.4);
//    cout << "Complex-->double" << endl;
//    cout << double(com1) << endl;
//
//    return 0;
//}


//#include<iostream>
//using namespace std;
//
//class Complex {
//private:
//    double a, b;
//public:
//    Complex(double aa, double bb)
//    {
//        a = aa;
//        b = bb;
//    }
//    operator double()
//    {
//        return  a;
//    }
//    operator int()
//    {
//        return int(a);
//    }
//};
//
//int main()
//{
//    double a, b, c, d;
//    cin >> a >> b >> c >> d;
//
//    Complex com1(a, b);
//    cout << "Complex-->double:";
//    cout << double(com1) << endl;
//    Complex com2(c, d);
//    cout << "Complex-->int:";
//    cout << int(com2) << endl;
//
//    return 0;
//}

//#include<iostream>
//using namespace std;
//
//class Complex {
//private:
//    double a, b;
//public:
//    Complex(double aa, double bb)
//    {
//        a = aa;
//        b = bb;
//    }
//    Complex(int i)
//    {
//        a = b = i / 2;
//    }
//    Complex(){}
//
//    operator int()
//    {
//        return int(a+b);
//    }
//    void print()
//    {
//        cout << "real=" << a << ",imag=" << b << endl;
//    }
//};
//
//int main()
//{
//    Complex com1(1.1, 2.2), com2(3.3, 4.4), com3;
//    com3 = com1 + com2;
//    com3.print();
//
//    return 0;
//}


//#include<iostream>
//using namespace std;
//
//class My_base {
//private:
//    int a, b;
//public:
//    My_base(int x,int y):a(x),b(y){}
//    void show()
//    {
//        cout << "My_base::show()" << endl;
//        cout << a << " " << b << endl;
//    }
//};
//
//class My_class : public My_base {
//private:
//    int c;
//public:
//    My_class(int x, int y, int z) :My_base(x, y)
//    {
//        c = z;
//    }
//    void show()
//    {
//        cout << "My_class::show()" << endl;
//        cout << c << endl;
//    }
//};
//
//int main()
//{
//    My_base mb(50, 50), * mp;
//    My_class mc(10, 20, 30);
//    mp = &mb;
//    mp->show();
//    mp = &mc;
//    mp->show();
//
//    return 0;
//}

//#include<iostream>
//using namespace std;
//
//class My_base {
//private:
//    int a, b;
//public:
//    My_base(int x, int y) :a(x), b(y) {}
//    virtual void show()
//    {
//        cout << "My_base::show()" << endl;
//        cout << a << " " << b << endl;
//    }
//};
//
//class My_class : public My_base {
//private:
//    int c;
//public:
//    My_class(int x, int y, int z) :My_base(x, y)
//    {
//        c = z;
//    }
//    virtual void show()
//    {
//        cout << "My_class::show()" << endl;
//        cout <<"c=" << c << endl;
//    }
//};
//
//int main()
//{
//    My_base mb(50, 50), * mp;
//    My_class mc(10, 20, 30);
//    mp = &mb;
//    mp->show();
//    mp = &mc;
//    mp->show();
//
//    return 0;
//}

//#include<iostream>
//using namespace std;
//
//class B0 {
//public:
//    virtual void print(const char* s)
//    {
//        cout << s << "print()" << endl;
//    }
//};
//
//class B1 :public B0 {
//public:
//    virtual void print(const char* s)
//    {
//        cout << "B1:" << s << "print()" << endl;
//    }
//};
//class B2 :public B0 {
//public:
//    virtual void print(const char* s)
//    {
//        cout << "B2:" << s << "print()" << endl;
//    }
//};
//
//
//int main()
//{
//    B0 ob0, * op;
//    op = &ob0;
//    op->print("B0:");
//    B1 ob1;
//    op = &ob1;
//    op->print("B1:");
//    B2 ob2;
//    op = &ob2;
//    op->print("B2:");
//
//    return 0;
//}

//#include<iostream>
//using namespace std;
//
//class B0 {
//public:
//    virtual void print(const char* s)
//    {
//        cout << s << "print()" << endl;
//    }
//};
//
//class B1 :public B0 {
//public:
//    virtual void print(const char* s)
//    {
//        cout << "B1:" << s << "print()" << endl;
//    }
//};
//class B2 :public B0 {
//public:
//    virtual void print(const char* s)
//    {
//        cout << "B2:" << s << "print()" << endl;
//    }
//};
//
//int main()
//{
//    B0 ob0, * op;
//    ob0.print("B0:");
//    B1 ob1;
//    ob1.print("B1:");
//    B2 ob2;
//    ob2.print("B2:");
//
//    return 0;
//}

//#include<iostream>
//using namespace std;
//class B {
//public:
//    ~B()
//    {
//        cout << "~B()..." << endl;
//    }
//};
//
//class D :public B {
//public:
//    ~D()
//    {
//        cout << "~D()..." << endl;
//    }
//};
//int main()
//{
//    D obj;
//
//    return 0;
//}

//#include<iostream>
//using namespace std;
//
//class Base {
//public:
//    virtual void func1()
//    {
//        cout << "--Base func1--" << endl;
//    }
//    virtual void func2()
//    {
//        cout << "--Base func2--" << endl;
//    }
//    virtual void func3()
//    {
//        cout << "--Base func3--" << endl;
//    }
//    void func4()
//    {
//        cout << "--Base func4--" << endl;
//    }
//};
//
//class Derived :public Base {
//public:
//    virtual void func1()
//    {
//        cout << "--Derived func1--" << endl;
//    }
//    void func2(int)
//    {
//        cout << "--Derived func2--" << endl;
//    }
//    void func4()
//    {
//        cout << "--Derived func4--" << endl;
//    }
//};


//int main()
//{
//    Base d1, * bp;
//    Derived d2;
//    bp = &d2;
//    bp->func1();
//    bp->func2();
//    bp->func4();
//    return 0;
//}

//#include<iostream>
//using namespace std;
//
//class Base1 {
//public:
//	virtual void fun()
//	{
//		cout << "--Base1--" << endl;
//	}
//};
//
//class Base2 {
//public:
//	void fun()
//	{
//		cout << "--Base2--" << endl;
//	}
//};
//
//class Derived:public Base1,public Base2 {
//public:
//	void fun()
//	{
//		cout << "--Derived--" << endl;
//	}
//};
//
//int main()
//{
//	Base1* ptr1;
//	Base2* ptr2;
//	Derived obj3;
//	ptr1 = &obj3;
//	ptr1->fun();
//	ptr2 = &obj3;
//	ptr2->fun();
//
//	return 0;
//}

//#include<iostream>
//using namespace std;
//class Figure {
//protected:
//	double x, y;
//public:
//	Figure(double xx,double yy):x(xx),y(yy){}
//	virtual void area(){}
//};
//
//class Triangle :public Figure {
//public:
//	Triangle(double xx, double yy) :Figure(xx, yy) {}
//	void area()
//	{
//		double area = x * y / 2;
//		cout << "Triangle height:" << x << ",base:" << y << ",area:" << area << endl;
//	}
//};
//class Rectangle:public Figure {
//public:
//	Rectangle(double xx, double yy) :Figure(xx, yy) {}
//	void area()
//	{
//		double area = x * y ;
//		cout << "Rectangle length:" << x << ",width:" << y << ",area:" << area << endl;
//	}
//};
//class Circle:public Figure {
//public:
//	Circle(double xx) :Figure(xx, xx) {}
//	void area()
//	{
//		double area = x*x*3.1416;
//		cout << "Circle ridius:" << x <<  ",area:" << area << endl;
//	}
//};
//
//int main()
//{
//	Figure* p;
//	Triangle t(10, 6);
//	Rectangle r(10, 6);
//	Circle c(10);
//	p = &t;
//	p->area();
//	p = &r;
//	p->area();
//	p = &c;
//	p->area();
//	return 0;
//}

//#include<iostream>
//using namespace std;
//
//class Circle {
//protected:
//    int r;
//public:
//    void setr(int rr)
//    {
//        r = rr;
//    }
//    virtual void show(){}
//};
//
//class Area :public Circle {
//public:
//    void show()
//    {
//        cout << "The circle's area is " << r*r * 3.14 << endl;
//    }
//};
//
//class Perimeter :public Circle {
//public:
//    void show()
//    {
//        cout << "The circle's circumference is " << 2*r * 3.14 << endl;
//    }
//};
//
//int main()
//{
//    Circle* ptr;
//    Area ob1;
//    Perimeter ob2;
//
//    ob1.setr(10);
//    ob2.setr(10);
//    ptr = &ob1;
//    ptr->show();
//    ptr = &ob2;
//    ptr->show();
//
//    return 0;
//}

#include<iostream>
using namespace std;

class Circle {
protected:
    double r;
public:
    Circle(double rr)
    {
        r = rr;
    }
    virtual void show() {}
};
class Area :public Circle {
public:
    Area(double rr) :Circle(rr) {}
    void show()
    {
        cout << "area=" << r * r * 3.14 << endl;
    }
};
class Perimeter :public Circle {
public:
    Perimeter(double rr) :Circle(rr) {}
    void show()
    {
        cout << "Perimeter=" << 2 * r * 3.14 << endl;
    }
};
int main()
{
    double r1, r2;
    cin >> r1 >> r2;
    Circle* p;
    Area a(r1);
    p = &a;
    p->show();
    Perimeter per(r2);
    p = &per;
    p->show();
    return 0;
}